package com.tlgen.modules.common.service;

import com.tlgen.modules.common.domain.J_Area;
import com.tlgen.modules.common.service.dto.J_AreaDto;
import com.tlgen.modules.common.service.dto.J_AreaQueryCriteria;
import com.tlgen.modules.system.domain.Menu;
import com.tlgen.modules.system.service.dto.MenuDto;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface J_AreaService {

    /**
     * 构建树
     * @param j_areaDtos 原始数据
     * @return /
     */
    Map<String,Object> buildTree(List<J_AreaDto> j_areaDtos);

    /**
     * 构建树
     * @param j_areaDtos /
     * @return /
     */
    Object buildJ_Areas(List<J_AreaDto> j_areaDtos);


    /**
     * 查询全部数据
     * @param criteria 条件
     * @return /
     */
    List<J_AreaDto> queryAll(J_AreaQueryCriteria criteria);

    /**
     * 根据pid查询
     * @param pid /
     * @return /
     */
    List<J_Area> findByPid(long pid);

    /**
     * 获取树
     * @param j_areas /
     * @return /
     */
    Object getJ_AreaTree(List<J_Area> j_areas);

    /**
     * 新增
     * @param resources /
     * @return /
     */
    J_AreaDto create(J_Area resources);

    /**
     * 编辑
     * @param resources /
     */
    void update(J_Area resources);

    /**
     * 获取待删除的行政区域
     * @param j_areaList /
     * @param j_areaSet /
     * @return /
     */
    Set<J_Area> getDeleteJ_Areas(List<J_Area> j_areaList, Set<J_Area> j_areaSet);

    /**
     * 根据ID查询
     * @param id /
     * @return /
     */
    J_Area findOne(Long id);


    /**
     * 删除
     * @param j_areaSet /
     */
    void delete(Set<J_Area> j_areaSet);

    /**
     * 导出
     * @param queryAll 待导出的数据
     * @param response /
     * @throws IOException /
     */
    void download(List<J_AreaDto> queryAll, HttpServletResponse response) throws IOException;


}
